#include <algorithm>
#include <iostream>
using namespace std;

#define int long long
const int mod = 1e9 + 7;

int f[105];  // f[i] = LCM(1..i)

// 计算最大公约数
int gcd(int x, int y) { return (y == 0) ? x : gcd(y, x % y); }

// 计算最小公倍数
int lcm(int x, int y) {
    return (x / gcd(x, y)) * y;  // 先除后乘避免溢出
}

// 预计算LCM数组
void init() {
    f[0] = f[1] = 1;
    for (int i = 2; i <= 100; i++) {
        f[i] = lcm(f[i - 1], i);
    }
}

signed main() {
    init();
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        int ans = 0;
        // 枚举i，对应k = i+1
        for (int i = 1; f[i] <= n; i++) {
            // 计算数量：能被f[i]整除但不能被f[i+1]整除的数的个数
            int cnt = (n / f[i]) - (n / f[i + 1]);
            ans = (ans + (i + 1) * cnt) % mod;  // 累加贡献并取模
        }
        cout << ans << '\n';
    }
    return 0;
}